memory management主要負責管理memory的內存,在低階語言如c和c++在宣告malloc、new時,需在結束時使用free釋放記憶體,否則當memory越來越肥時,會跑出memory leak的問題
在高階語言如python、javascript加入garbage Collection機制來回收沒在使用的內存,回收方式大致分為兩種
Mark & Sweep算法主要分為兩個階段,mark和sweep,在初始化object時會給定其初始化狀態mark=false
,在mark階段時會將使用到的object進行標記起來mark=true
,在sweep階段中將mark=false
的object進行release掉,並且設置mark=false
後重複上述動作,藉由不斷掃描並釋放在heap區段中多餘的object。
缺點:
在此算法中基礎做法為在initial物件時給一個初始值reference count=1
,使用該object則+1,如果沒有使用到則-1,當reference count=0
時則release該物件
缺點:
在兩個process中要互相溝通有兩種方式,分別是Shared Memory和Message passing,python針對process傳遞可參考https://docs.python.org/2/library/multiprocessing.html#exchanging-objects-between-processes
在不同的process間使用同一個memory區段去共同控管,會需要考量的race condition(https://ithelp.ithome.com.tw/articles/10239243)的問題
先建立起溝通的pipe,然後將其分別丟入兩個不同的process,在不同的process中透過pipe溝通
以下偏hardware以及系統底層有簡易觀念了解架構即可
I/O management主要是I/O device在電腦設備中如何去運作可以參考https://www.tutorialspoint.com/operating_system/os_io_hardware.htm簡易看過即可,以及unix中所有操作都是由POSIX API所定義而成,詳細內容可看https://unix.stackexchange.com/questions/11983/what-exactly-is-posix
https://aws.amazon.com/tw/what-is/computer-networking/